import java.util.*;

public class t1177 {
    //1177. 构建回文串检测 中等
    public static void main(String[] args) {

        String s = "qzcdmvmfinetotshix";
       // System.out.println(s.length());
        int queries[][] = {{0,17,6}};
        //System.out.println(canMakePaliQueries(s, queries));
       // System.out.println(canMakePaliQueries(s, queries));
       // System.out.println(1 << 3);
       // System.out.println(1 ^ 0);
        int v = 7;
        int c = 0;
        while (v != 0) {
                c++;
                v = v & (v - 1);
            System.out.println("v="+v+",c="+c);
           // System.out.println(c);
        }
    }


    public static List<Boolean> canMakePaliQueries(String s, int[][] queries) {
        int length = s.length();
        int[] arr = new int[length + 1];
        for (int i = 0; i < length; i++) {
            arr[i + 1] = arr[i] ^ (1 << (s.charAt(i) - 'a'));//arr[i+1]表示当前截至的子串的基偶情况
        }
        List<Boolean> list = new ArrayList<>(queries.length);
        for (int[] query : queries) {
            int v = arr[query[1] + 1] ^ arr[query[0]];//当前子串内有多少个基数字母    十进制数转成二进制  1的数量就是基数的数量
            int c = 0;
            c= Integer.bitCount(v);

//            while (v != 0) {
//                c++;
//                v = v & (v - 1);//当进行运算“n=n&(n-1)”时，会使得n的二进制序列的最右边的1消失
//            }

            list.add(c <= (query[2] << 1) + 1);
        }
        return list;
//        List<Boolean> list = new ArrayList<>();
//        Set<String> set = new HashSet<>();
//        int arr[] = new int[26];
//        for(int i =0;i<queries.length;i++){
//            int left = queries[i][0];
//            int right = queries[i][1];
//            int k = queries[i][2];
//            String str = s.substring(left,right+1);
//           // System.out.println(str);
//            int len = str.length();
//            for(int l = 0;l<len;l++){
//                arr[str.charAt(l)-'a']++;
//                //set.add(str.substring(l,l+1));
//            }
//            System.out.println(set);
//            System.out.println(Arrays.toString(arr));
//            len = arr.length;
//            for(int l = 0;l<len;l++){
//                if(arr[l]!=0&&arr[l]%2!=0){
//                    set.add(((char)('a'+l))+"");
//                }
//            }
//            System.out.println(set);
//            if(set.size()==1|| k>=set.size()/2){
//               // System.out.println(set);
//                list.add(true);
//            }else{
//                list.add(false);
//            }
//            set.clear();;
//            arr = new int[26];
//        }
//        return list;
    }
}
